Computer networks may typically include a plurality of servers that can host data and provide services to multiple clients or organizations. The clients or organizations can use these services or data to power a wide variety of workloads such as storage, data processing and warehousing, web and mobile applications, archive and many other tasks. Generally, clients request services or data from a host system and the host system responds by executing certain tasks to service the request and/or provide the data over the network.
In some instances, the host system may communicate with an intelligent Input/Output (I/O) device. For example, the intelligent I/O device may include a plurality of resources such as memories, peripherals, etc. In some implementations, a system on a chip (SoC) may perform as an intelligent I/O device to a root complex processor on the host system. In most instances, in order for the host system to access a resource associated with the SoC, the host system has to communicate through a processor on the SoC. For example, the SoC processor may access the resource on behalf of the host system. The resource can send a response back to the SoC processor, wherein the SoC can forward the response back to the host system. Similarly, resources on the SoC or coupled to the SoC also need to use the processor on the SoC and potentially also the host processor to facilitate peer-to-peer communication between the resources. This may result in additional processing and interrupts in the system and, in general, higher latency for accessing an SoC resource by the host system, thus reducing the throughput of the system.